#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "fila.h"

void usage(void);

int main(void) {
	FILE *fp;
	tNodo aux;
	tFila *fila;
	char *comando;

	fila = (tFila *)malloc(sizeof(tFila));
	
	if ((fp = fopen("processos.txt", "r")) == NULL) {
			printf("Erro ao abrir arquivo!\n");
			perror("processos.txt");
			return -1;
	}

	scanf("%s", comando);
	while (strcmp(comando, "sair") != 0) {
	
	if (strcmp(comando, "listar") == 0) {
		// lista nodos da fila
		while (fila->front->prox != NULL) {
			tNodo *auxx;
			auxx = (tNodo *)malloc(sizeof(tNodo));
			auxx = fila->front;
			fila->front = auxx->prox;
			printf("%s %d %d\n", auxx->nome, auxx->tamanho, auxx->prioridade);
		}
	} else if (strcmp(comando, "consulta_pri") == 0) {
	} else if (strcmp(comando, "consulta_tam") == 0) {
	} else if (strcmp(comando, "adiciona") == 0) {
	} else if (strcmp(comando, "remove") == 0) {
	} else if (strcmp(comando, "ler") == 0) {
		// Le a lista de processos de arquivo.
		while(fscanf(fp, "%s %d %d", 
									aux.nome, 
									&aux.tamanho, 
									&aux.prioridade) != EOF) {
			printf("%s %d %d\n", aux.nome, aux.tamanho, aux.prioridade);
			adiciona(fila, &aux);
		}
		fclose(fp);
	}

	scanf("%s", comando);

	}

	return 0;
}

void usage(void) {
	printf("Opcoes:\n\n");
	printf("  - listar: lista todos processos que estao na memoria.\n");
	printf("  - consulta_pri: lista todos processos com determinada prioridade.\n");
	printf("  - consulta_tam: lista todos processos com determinado tamanho.\n");
	printf("  - adiciona: adiciona um novo processo na memoria.\n");
	printf("  - remove: remove um processo da memoria.\n");
	printf("  - ler: le de um arquivo uma lista de processos a serem adicionados.\n");
}
